草庐IT

while循环中的php sum变量

全部标签

c# - volatile 变量有用吗?如果是,那么什么时候?

回复thisquestion让我想到了一些对我来说仍然不清楚的事情。让我们首先假设我们从thispost读取所有内容和thispost.[开始编辑]也许它不是那么明显(意大利幽默?!)但标题非常具有挑衅性:当然应该有一个原因,如果volatile已包含在C#中,我只是无法理解确切的内容。[结束编辑]简而言之,我们知道我们有三个工具可以在线程之间共享变量:lock因为这将阻止指令重新排序。volatile因为会强制CPU始终从内存中读取值(然后不同的CPU/内核不会缓存它,也不会看到旧值)。互锁操作(Increment/Decrement和CompareExchange)因为它们将在单个

c# - 主要方法中的变量是静态的吗

众所周知,静态方法只能作用于静态成员。publicstaticvoidMain(){Testt1=newTest();}这里的Main方法是静态的,但我没有将t1声明为静态的。它是隐式静态的吗? 最佳答案 不,它是一个本地变量。无论是在静态方法还是在实例方法中声明,局部变量的行为方式都相同。作为非常粗略的指南(捕获的变量等会引入复杂性):实例变量:每个实例一个变量静态变量:类型本身的一个变量局部变量(包括参数):每个方法调用一个单独的变量 关于c#-主要方法中的变量是静态的吗,我们在St

c# - "while (true)"通常用于永久线程吗?

我对编码比较陌生;我的大部分“工作”只是简单的GUI应用程序,它们只用于一件事,所以我不需要线程太多。无论如何,关于线程我想知道的一件事是,如果你想让一个线程永远保持事件状态以完成它正在做的任何工作(处理,等待输入,等等),像这样格式化它是否正常:while(true){//dostuffThread.Sleep(1000);}(或类似的东西)...?还是这不安全,是否应该尽可能避免? 最佳答案 是的,这就是您所做的。但通常是这样的:boolkeepRunning=true;...while(keepRunning){}因为有时您可

c# - Span<T> 不需要局部变量赋值。那是一个功能吗?

我注意到即使局部变量没有初始化,下面的代码也会编译和执行。这是Span的特性吗?voidUninitialized(){Spans1;varl1=s1.Length;Spans2;UninitializedOut(outs2);varl2=s2.Length;}voidUninitializedOut(outSpans){} 最佳答案 这看起来像是由引用程序集引起的问题,由于Span的方式而需要。具有特定于框架的内部结构。这意味着在引用程序集中:没有字段(编辑:这不完全正确-参见脚注)。Astruct如果所有字段都已分配,则被视为已

c# - 为什么在构造函数中实例化新对象之前检查类变量是否为空?

与我之前合作过的一个团队,每当创建一个新的服务类来处理数据层和表示层之间的业务逻辑时,都会执行如下操作:classDocumentService{publicDocumentRepositoryDocumentRepository{get;set;}publicDocumentService(){if(DocumentRepository==null)DocumentRepository=newDocumentRepository();}}我一直不太明白为什么要对null进行检查。如果正在调用构造函数,则意味着它必须为null..因为它是一个新实例,对吗?为什么要这样做?在我看来,这是

C# 从 float 变量中获取数字

我有一个float变量,我只想得到逗号后面的部分,所以如果我有3.14。我想得到14作为整数。我该怎么做? 最佳答案 您可以从值本身中减去整数部分以检索小数部分。floatx=3.14floatfractionalPortion=x-Math.Truncate(x);然后您可以将它相乘,得到小数部分,以您想要的任何精度表示为整数。将小数部分映射到整数有一些挑战-许多float不能表示为以10为底的整数,因此可能需要比整数所能支持的更多的数字来表示。还有,像3.1和3.01这样的数字呢?直接映射到整数都会得到1。

c# - 将变量设置为开关的结果

在C#中,是否可以通过switch表达式设置变量?例如:vara=switch(b){casec:d;casee:f;default:g;};是否可以使用任何其他语言? 最佳答案 从C#8开始:是的,switch表达式是在C#8中引入的。在语法方面,示例如下:vara=bswitch{c=>d,e=>f,_=>g};...其中c和e必须是有效的模式才能与b匹配。_代表默认大小写。C#8之前:不,switch是一个语句而不是一个可以计算的表达式。当然也可以提取到另外一个方法中:intx=DoSwitch(y);...privatein

c# - 背靠背 for 循环中的 int、short、byte 性能

(背景:WhyshouldIuseintinsteadofabyteorshortinC#)为了满足我自己对使用“适当大小”整数与“优化”整数的优缺点的好奇心,我编写了以下代码,这些代码强化了我之前对.Net中的int性能的看法(并对此进行了解释在上面的链接中)这是针对int性能而不是short或byte进行了优化。DateTimet;longa,b,c;t=DateTime.Now;for(intindex=0;index这在......方面给出了大致一致的结果~950000~2000000~1700000这符合我的预期。然而,当我尝试像这样为每种数据类型重复循环时......t=D

c# - 为什么可以在同一个类中创建的另一个线程中访问局部变量?

我真的找不到关于这个确切主题的任何内容,所以如果问题已经存在,请引导我走向正确的方向。根据我对.NET的了解,不可能跨不同线程访问变量(如果该语句有误,请纠正我,这正是我在某处读到的)。然而,现在在这个代码示例中,它似乎不应该工作:classMyClass{publicintvariable;internalMyClass(){Threadthread=newThread(newThreadStart(DoSomething));thread.IsBackground=true;thread.Start();}publicvoidDoSomething(){variable=0;for

c# - "o"作为变量前缀是什么意思?

在oCn?规则是什么?using(SqlConnectionoCn=newSqlConnection("Server=(local);Database=Pubs;UserID=TestUser1;Password=foo1;")){oCn.Open();...}我在这篇文章中发现了这种命名方式http://msdn.microsoft.com/en-us/magazine/cc163799.aspx 最佳答案 “Cn”是一个*o*对象的完全过时的说法。 关于c#-"o"作为变量前缀是什么